﻿using System;
using System.Collections.Concurrent;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace MudClassSkeleton
{
    /// <summary>
    /// Flaggable
    /// This abstract class is the base class for game objects that can have
    /// flags associated with them.  This class uses the ConcurrentDictionary
    /// type to support fast lookup and thread safety.
    /// </summary>
    public abstract class Flaggable : GameElement
    {
        protected ConcurrentDictionary<Flag, string> _flags;

        // The Realm to which this object belongs.  Maybe this should come out.
        protected Realm _realm;

        /// <summary>
        /// HasFlag
        /// This method determines whether the derived object references the specified
        /// flag.
        /// </summary>
        /// <param name="In">Flag object to be checked against the flags contained
        /// in this object's dictionary.</param>
        /// <returns>[bool] true if the Flag is present, otherwise false.</returns>
        public bool HasFlag(Flag In)
        {
            return false;
        }

        // CompareFlag has been removed from this class because this functionality is
        // better handled elsewhere.
    }
}
